package com.study.d5_bigdecimal;

import java.math.BigDecimal;

public class Test {
    public static void main(String[] args) {
        //学会处理浮点数型运算失真的问题
        double a = 0.1;
        double b = 0.2;
        System.out.println(a+b);
        //构造器BigDecimal(double d)处理数据大的内容（如两个double相加导致溢出），不能处理精度问题
        //构造器BigDecimal(String s)可以解决精度问题

        //方法一
        BigDecimal ba = new BigDecimal(Double.toString(a));
        BigDecimal bb = new BigDecimal(Double.toString(b));
//        System.out.println(ba+bb);

        //方法2：alibaba常用
        BigDecimal ba2 = BigDecimal.valueOf(a);
        BigDecimal bb2 = BigDecimal.valueOf(b);
        BigDecimal add1 = ba.add(bb);
        System.out.println(add1.doubleValue());
        BigDecimal add2 = ba2.add(bb2);
        System.out.println(add2.doubleValue());
        System.out.println("-------------------------------");
        //处理有无限循环小数手段
        BigDecimal bd1 = BigDecimal.valueOf(0.1);
        BigDecimal bd2 = BigDecimal.valueOf(0.3);
        BigDecimal divide = bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP);
        System.out.println(divide.doubleValue());
    }
}
